In today's computer networks, there is an increasing demand for multicasting capabilities. Multicasting is the act of sending a single data message from one node in the network to a group of other nodes. When the group includes all of the nodes in the network, the act is generally referred to as “broadcasting.” Currently, large networks such as the Internet implement multicasting by sending a message serially from one node to another, making multiple copies of the multicast data at strategic points along the way, and sending the copies down the various network paths and, eventually, to the members of the multicast group. One problem with this method is that it is inefficient, since it requires the various network nodes to expend processing power to make and transmit additional copies of the message. Another more fundamental problem is that multicasting is intended to be a parallel process—i.e. each of the recipient nodes should receive the data simultaneously—but land-based network links are inherently serial, requiring a message to be relayed from node to node before reaching its final destination. This can result in propagation delays, causing distant nodes to receive the message much later than nodes closer to the origin. Sophisticated multicast protocols have been developed to address these problems, but they consume processing overhead and only represent stopgap measures.
One specialized form of multicasting occurs in packet switched networks such as the Internet and involves the use of routers, which are a type of network node that directs data traffic between different devices on the network. When two or more computer in the network send data to one another during a communication session, routers “route” the data by determining the most appropriate paths over which the data should flow based on a number of criteria, including distance and Quality of Service (QOS). In order to make this determination, the routers have to create and maintain a routing database that describes the routing topology of the network. The routing database requires constant updating, since the routing topology can change quickly as a result of the addition, deletion, and failure of network equipment. Moment to moment changes in traffic loads at different parts of the network also need to be reflected in the routing database, since these changes can instantaneously cause previously optimal routes to become sub-optimal.
In the current approach to routing, the routers use the conventional network paths themselves to update each other with local routing data. One problem with this approach is that the very act of sending the updates impacts the data traffic on the network, and can render the updates inaccurate. Another problem relates back to the serial nature of conventional network links, in that updates transmitted by one router will reach nearby routers relatively quickly, while updates to distant routers will take much longer. As a result, a router will tend to have a good picture of the network in the local area, but a relatively out-of-date picture of distant parts of the network.
Routing protocols have been developed to ameliorate these problems, but like multicast protocols, they consume processing power and can only solve the problem to a limited degree. For example, if the network conditions change faster than the shortest time it takes a message to travel across the network, routers will always be out of date with respect to current network conditions, and thus make suboptimal routing decisions. Thus, existing QOS protocols need to deal with cases where not all of the desired resources are still available by the time the protocol requests reach the node(s) holding those resources. In a network with rapidly changing conditions, it is difficult for the protocol to successfully “seize the moment” to allocate a set of resources that are dispersed across the network. Existing QOS protocols must use various allocation and error recovery techniques that are complicated and suboptimal.
Thus it can be seen that there is a need for a method of communicating to a plurality of network nodes in parallel that can be applied to real-world problems such as network routing.